home *** CD-ROM | disk | FTP | other *** search
- ;;VAR
-
- NUMBUFS = 4
- BUFADD: DC.L MINIMUM_ACODE
-
- FIXED = 0
- REALLOCATABLE = 1
- EXPANDABLE = 2
-
-
- BTAB: DC.L CURINTERIM,.1,REALLOCATABLE
- DC.L CURACODE,.3,FIXED
- DC.L HEAP,.5,EXPANDABLE
- DC.L LABM,.6,REALLOCATABLE
- .1: DC.B "intermediate code",0
- .3: DC.B "libraries/generated code",0
- .5: DC.B "general/identifier",0
- .6: DC.B "label",0
- EVEN
-
- DEBUGDATA:
- DC.L OLIST
- DC.L PROCLIST
- DC.L IDENTHASH
- DBUGV:
- DC.L 0
- DBUGA:
- DC.L 0
- DC.L MODINFOLIST
- DC.L CODELIST
- DC.L MEMLIST
- DC.L HEAP
- DC.L MACROHASH
-
- INITBUFFERS:
- MOVE.W #1,CURSPOT
- MOVE.L EBUFSIZE,D0
- LSR.L #1,D0 ; *1.5+50k
- ADD.L EBUFSIZE,D0
- ADD.L BUFADD(PC),D0
- MOVE.L D0,CURACODE+20
- BSR REALLOC1
- BSR ALLOC3
- BSR ALLOC5
- BSR REALLOC6
- MOVE.L HEAP+20,GENERALSIZE
- RTS
-
- REALLOC1:
- MOVEM.L D6/A5,-(A7)
- LEA CURINTERIM,A5
- BSR REALLOC
- MOVEM.L (A7)+,D6/A5
- RTS
-
- ALLOC3:
- MOVEM.L D6/A5,-(A7)
- LEA CURACODE,A5
- BSR REALLOC
- MOVEM.L (A7)+,D6/A5
- RTS
-
- CHECK3:
- MOVEM.L D6/A5,-(A7)
- LEA CURACODE,A5
- BSR CHECK
- MOVEM.L (A7)+,D6/A5
- RTS
-
- ALLOC5:
- MOVEM.L D6/A5,-(A7)
- LEA HEAP,A5
- BSR REALLOC
- MOVEM.L (A7)+,D6/A5
- RTS
-
- EXPAND5:
- MOVEM.L D6/A5,-(A7)
- LEA HEAP,A5
- BSR EXPANDBUF
- MOVEM.L (A7)+,D6/A5
- RTS
-
- REALLOC6:
- MOVEM.L D6/A5,-(A7)
- LEA LABM,A5
- BSR REALLOC
- MOVEM.L (A7)+,D6/A5
- RTS
-
- COOKIE = $BE
-
- NEW:
- MOVEM.L D1/D2/A0/A1/A6,-(A7) ; SIZE-->D0-->ADDR
- ADDQ.L #8,D0
- ADDQ.L #1,D0
- MOVE.L D0,D2
- MOVEQ #0,D1
- MOVE.L 4.W,A6
- JSR -198(A6)
- TST.L D0
- BEQ.S .EXX
- MOVE.L D0,A0
- ADDQ.L #8,D0
- MOVE.B #COOKIE,-1(A0,D2.L)
- MOVE.L MEMLIST(PC),(A0)
- MOVE.L D2,4(A0)
- MOVE.L A0,MEMLIST
- .EXX: MOVEM.L (A7)+,D1/D2/A0/A1/A6
- RTS
-
- MEMLIST: DC.L 0
-
- DISPOSE: ; ADR-->D0
- MOVEM.L D0/D1/A0/A1/A2/A6,-(A7)
- TST.L D0
- BEQ.S .1
- SUBQ.L #8,D0
- LEA MEMLIST(PC),A1
- .XL:MOVE.L (A1),D1
- BEQ.S .1
- MOVE.L A1,A2 ; ADR TO LINK BACK TO
- MOVE.L D1,A1
- CMP.L D1,D0
- BNE.S .XL
- MOVE.L 4(A1),D0 ; MEMSIZE
- MOVE.L (A1),(A2) ; LINK BACK
- MOVE.L 4.W,A6
- JSR -210(A6)
- .1: MOVEM.L (A7)+,D0/D1/A0/A1/A2/A6
- RTS
-
-
- REALLOC: ; CALLED FROM EVERYWHERE
- MOVE.L 8(A5),D6
- ADD.L 12(A5),D6
- SUB.L 16(A5),D6
- CMP.L (A5),D6
- BMI.S .1
- RTS
- .1: MOVEM.L D0/D1/D7/A0/A1/A6,-(A7)
- MOVE.L 12(A5),D0
- ADD.L 20(A5),D0 ; NEW SIZE
- MOVE.L D0,D6 ; D6=SIZE
- BSR NEW
- TST.L D0
- BEQ.S .ER
- MOVE.L D0,D7 ; D7=ADR
- TST.L 12(A5)
- BEQ.S .2 ; NO COPYING/FREEMEM
- MOVE.L D7,A1
- MOVE.L 8(A5),A0
- MOVE.L 12(A5),D0
- MOVE.L 4.W,A6
- JSR -630(A6) ; COPYMEMQUICK
- MOVE.L 8(A5),D0
- BSR DISPOSE
- .2: TST.L (A5) ; NEW SETTINGS
- BNE.S .3
- MOVE.L D7,(A5)
- BRA.S .4
- .3: MOVE.L (A5),D0
- SUB.L 8(A5),D0
- ADD.L D7,D0
- MOVE.L D0,(A5)
- .4: MOVE.L D7,8(A5)
- MOVE.L D6,12(A5)
- MOVEM.L (A7)+,D0/D1/D7/A0/A1/A6
- RTS
- .ER: MOVEM.L (A7)+,D0/D1/D7/A0/A1/A6
- BRA iERROR38
-
- CHECK:
- MOVE.L 8(A5),D6
- ADD.L 12(A5),D6
- SUB.L 16(A5),D6
- CMP.L (A5),D6
- BMI iERROR37
- RTS
-
- EXPANDBUF:
- MOVE.L 8(A5),D6
- ADD.L 12(A5),D6
- SUB.L 16(A5),D6
- CMP.L (A5),D6
- BMI .1
- RTS
- .1: MOVE.L D0,-(A7)
- MOVE.L 20(A5),D0
- MOVE.L D0,12(A5)
- ADD.L D0,GENERALSIZE
- BSR NEW
- TST.L D0
- BEQ iERROR38
- MOVE.L D0,(A5)
- MOVE.L D0,8(A5)
- MOVE.L (A7)+,D0
- RTS
-
- FREEBUFFERS:
- MOVE.L 4.W,A6
- MOVE.L MEMLIST(PC),A2
- .XL:MOVE.L A2,D0
- BEQ.S .X
- MOVE.L A2,A1
- MOVE.L 4(A2),D0
- MOVE.L (A2),A2
- JSR -210(A6)
- BRA.S .XL
- .X: CLR.L MEMLIST
- RTS
-
- CHECKCOOKIES:
- MOVE.L 4.W,A6
- MOVE.L MEMLIST(PC),A2
- .XL:MOVE.L A2,D0
- BEQ.S .X
- MOVE.L A2,A1
- MOVE.L 4(A2),D0
- MOVE.L (A2),A2
- CMPI.B #COOKIE,-1(A1,D0.L)
- BEQ.S .1
- ADDQ.W #1,BUFSPOT
- CLR.L MEMLIST ; BECAUSE OF CORRUPTED POINTERS?
- BRA.S .X
- .1: BRA.S .XL
- .X: TST.W BUFSPOT
- BEQ .x
- JMP DAMAGEDCOOKIES
- .x: RTS
-
- SWAPVALUES:
- JSR FIXOBJTYPES
- MOVE.L ACODE,CURACODE
- BSR GETLINEBUF
- RTS
-
- GETLINEBUF:
- BTST #5,CODEPREFS+1
- BEQ.S .1
- MOVEQ #0,D0
- MOVE.W MAXLINENUM(PC),D0
- LSL.L #3,D0
- ADD.L #1000,D0
- BSR NEW
- TST.L D0
- BEQ iERROR38
- MOVE.L D0,LINEBUF
- MOVE.L D0,A0
- MOVE.L #$3F1,(A0)+ ; HUNKID
- CLR.L (A0)+ ; HUNKLEN, _LATER_.
- CLR.L (A0)+ ; ADD2HUNK=0
- MOVE.L #"LINE",(A0)+
- ADDQ.L #4,A0
- MOVE.L A0,A2
- MOVE.L #NAMEBUF,A1
- .XL:MOVE.B (A1)+,(A0)+
- BNE.S .XL
- MOVE.B #".",-1(A0)
- MOVE.B #"e",(A0)+
- CLR.B (A0)+
- CLR.B (A0)+
- CLR.B (A0)+
- MOVE.L A0,D0
- SUB.L A2,D0
- LSR.L #2,D0
- MOVE.L D0,-4(A2)
- LSL.L #2,D0
- LEA 0(A2,D0.L),A0
- MOVE.L A0,LINEBUFCUR
- MOVE.L A0,LINEBUFCURSTART ; IF THE SAME LATER, DON'T SAVE
- .1: RTS
-
- ADDLINEDBG:
- TST.W PROCF
- BEQ.S .1
- MOVEM.L D0/A0,-(A7)
- MOVE.L LINEBUFCUR(PC),A0
- MOVEQ #0,D0
- MOVE.W LINENUM,D0
- ADDQ.L #1,D0
- MOVE.L D0,(A0)+
- MOVE.L A4,D0
- SUB.L ACODE,D0
- MOVE.L D0,(A0)+
- MOVE.L A0,LINEBUFCUR
- BTST #6,CODEPREFS+1
- BEQ.S .3
- MOVE.W .2(PC),(A4)+ ; ADD A NOP
- .3: MOVEM.L (A7)+,D0/A0
- .1: RTS
- .2: NOP
-
- DEBUGLIST: DC.L 0
- MAXLINENUM: DC.W 0
- LINEBUF: DC.L 0
- LINEBUFCUR: DC.L 0
- LINEBUFCURSTART: DC.L 0
-
- SETVARS:
- MOVE.L #BRACKETSBUF,CURBRACK
- MOVE.L #HASHBUFS,A0 ; CLEAR HASHTABLES
- MOVE.L #ENDHASHBUFS,D0
- SUB.L A0,D0
- LSR.L #2,D0
- SUBQ.L #1,D0
- MOVEQ #0,D1
- .CLR: MOVE.L D1,(A0)+
- DBRA D0,.CLR
- MOVE.L DIRNAMEX,A1 ; STD MODULE PATH
- LEA STDDIR(PC),A0
- .1: MOVE.B (A0)+,(A1)+
- BNE.S .1
- MOVE.W #-1,KILLFLAG ; FROM NOW, DELETE IF PROBLEMS
- LEA SELFNAME(PC),A0
- HASH A0,D0,D1
- LSL.L #2,D0
- ADD.L #IDENTHASH,D0
- MOVE.L D0,SELFHASHADR
- RTS
-
- STDDIR:
- DC.B 'emodules:',0
-
- ;*-*
-
-